#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
/***************************************************************************
        pyArchInit Plugin  - A QGIS plugin to manage archaeological dataset
        					 stored in Postgres
                             -------------------
    begin                : 2007-12-01
    copyright            : (C) 2008 by Luca Mandolesi
    email                : mandoluca at gmail.com
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/
"""
import sqlalchemy
from sqlalchemy import *
from sqlalchemy.orm import mapper
from pyarchinit_db_structure import US_table, US_table_toimp, Site_table, Periodizzazione_table, Inventario_materiali_table, Struttura_table, Media_table, Media_thumb_table,Media_to_US_table, Tafonomia_table, Inventario_materiali_table_toimp

class US(object):
	#def __init__"
	def __init__(self,
	id_us,
	sito,
	area,
	us,
	d_stratigrafica,
	d_interpretativa,
	descrizione,
	interpretazione,
	periodo_iniziale,
	fase_iniziale,
	periodo_finale,
	fase_finale,
	scavato,
	attivita,
	anno_scavo,
	metodo_di_scavo,
	inclusi,
	campioni,
	rapporti,
	data_schedatura,
	schedatore,
	formazione,
	stato_di_conservazione,
	colore,
	consistenza,
	struttura,
	cont_per,
	order_layer
	):
		self.id_us = id_us #0
		self.sito = sito #1
		self.area = area #2
		self.us = us #3
		self.d_stratigrafica = d_stratigrafica #4
		self.d_interpretativa = d_interpretativa #5
		self.descrizione = descrizione #6
		self.interpretazione = interpretazione #7
		self.periodo_iniziale = periodo_iniziale #8
		self.fase_iniziale = fase_iniziale #9
		self.periodo_finale = periodo_finale #10
		self.fase_finale = fase_finale #11
		self.scavato = scavato #12
		self.attivita = attivita #13
		self.anno_scavo = anno_scavo #14
		self.metodo_di_scavo = metodo_di_scavo #15
		self.inclusi = inclusi  #16
		self.campioni = campioni #17
		self.rapporti = rapporti #18
		self.data_schedatura = data_schedatura #19
		self.schedatore = schedatore #20
		self.formazione = formazione #21
		self.stato_di_conservazione = stato_di_conservazione #22
		self.colore = colore #23
		self.consistenza = consistenza #24
		self.struttura = struttura #25
		self.cont_per = cont_per #26
		self.order_layer = order_layer #27

	#def __repr__"
	def __repr__(self):
		return "<US(%d, '%s', '%s', %d,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d)>" % (
		self.id_us,
		self.sito,
		self.area,
		self.us,
		self.d_stratigrafica,
		self.d_interpretativa,
		self.descrizione,
		self.interpretazione,
		self.periodo_iniziale,
		self.fase_iniziale,
		self.periodo_finale,
		self.fase_finale,
		self.scavato,
		self.attivita,
		self.anno_scavo,
		self.metodo_di_scavo,
		self.inclusi,
		self.campioni,
		self.rapporti,
		self.data_schedatura,
		self.schedatore,
		self.formazione,
		self.stato_di_conservazione,
		self.colore,
		self.consistenza,
		self.struttura,
		self.cont_per,
		self.order_layer
		)
#mapper
mapper(US, US_table.us_table)

class US_TOIMP(object):
	#def __init__"
	def __init__(self,
	id_us,
	sito,
	area,
	us,
	d_stratigrafica,
	d_interpretativa,
	descrizione,
	interpretazione,
	periodo_iniziale,
	fase_iniziale,
	periodo_finale,
	fase_finale,
	scavato,
	attivita,
	anno_scavo,
	metodo_di_scavo,
	inclusi,
	campioni,
	rapporti,
	data_schedatura,
	schedatore,
	formazione,
	stato_di_conservazione,
	colore,
	consistenza,
	struttura
	):
		self.id_us = id_us #0
		self.sito = sito #1
		self.area = area #2
		self.us = us #3
		self.d_stratigrafica = d_stratigrafica #4
		self.d_interpretativa = d_interpretativa #5
		self.descrizione = descrizione #6
		self.interpretazione = interpretazione #7
		self.periodo_iniziale = periodo_iniziale #8
		self.fase_iniziale = fase_iniziale #9
		self.periodo_finale = periodo_finale #10
		self.fase_finale = fase_finale #11
		self.scavato = scavato #12
		self.attivita = attivita #13
		self.anno_scavo = anno_scavo #14
		self.metodo_di_scavo = metodo_di_scavo #15
		self.inclusi = inclusi  #16
		self.campioni = campioni #17
		self.rapporti = rapporti #18
		self.data_schedatura = data_schedatura #19
		self.schedatore = schedatore #20
		self.formazione = formazione #21
		self.stato_di_conservazione = stato_di_conservazione #22
		self.colore = colore #23
		self.consistenza = consistenza #24
		self.struttura = struttura #25


	#def __repr__"
	def __repr__(self):
		return "<US_TOIMP('%d', '%s', '%s', %d,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')>" % (
		self.id_us,
		self.sito,
		self.area,
		self.us,
		self.d_stratigrafica,
		self.d_interpretativa,
		self.descrizione,
		self.interpretazione,
		self.periodo_iniziale,
		self.fase_iniziale,
		self.periodo_finale,
		self.fase_finale,
		self.scavato,
		self.attivita,
		self.anno_scavo,
		self.metodo_di_scavo,
		self.inclusi,
		self.campioni,
		self.rapporti,
		self.data_schedatura,
		self.schedatore,
		self.formazione,
		self.stato_di_conservazione,
		self.colore,
		self.consistenza,
		self.struttura
		)
#mapper
mapper(US_TOIMP, US_table_toimp.us_table_toimp)

class SITE(object):
	#def __init__"
	def __init__(self,
	id_sito,
	sito,
	nazione,
	regione,
	comune,
	descrizione,
	provincia
	):
		self.id_sito = id_sito #0
		self.sito = sito #1
		self.nazione = nazione #2
		self.regione = regione #3
		self.comune = comune #4
		self.descrizione = descrizione #5
		self.provincia = provincia #5

	#def __repr__"
	def __repr__(self):
		return "<SITE('%d', '%s', '%s',%s,'%s','%s')>" % (
		self.id_sito,
		self.sito,
		self.nazione,
		self.regione,
		self.comune,
		self.descrizione,
		self.provincia
		)
#mapper
mapper(SITE, Site_table.site_table)

class PERIODIZZAZIONE(object):
	#def __init__"
	def __init__(self,
	id_perfas,
	sito,
	periodo,
	fase,
	cron_iniziale,
	cron_finale,
	descrizione,
	datazione_estesa,
	cont_per
	):
		self.id_perfas = id_perfas #0
		self.sito = sito #1
		self.periodo = periodo #2
		self.fase = fase #3
		self.cron_iniziale = cron_iniziale #4
		self.cron_finale = cron_finale #5
		self.descrizione = descrizione #6
		self.datazione_estesa = datazione_estesa #7
		self.cont_per = cont_per #8

	#def __repr__"
	def __repr__(self):
		return "<PERIODIZZAZIONE('%d', '%s', '%d', '%d', '%d', '%d', '%s', '%s', %d)>" % (
		self.id_perfas,
		self.sito,
		self.periodo,
		self.fase,
		self.cron_iniziale,
		self.cron_finale,
		self.descrizione,
		self.datazione_estesa,
		self.cont_per
		)
#mapper

mapper(PERIODIZZAZIONE, Periodizzazione_table.periodizzazione_table)

class INVENTARIO_MATERIALI(object):
	#def __init__"
	def __init__(self,
	id_invmat,
	sito,
	numero_inventario,
	tipo_reperto,
	criterio_schedatura,
	definizione,
	descrizione,
	area,
	us,
	lavato,
	nr_cassa,
	luogo_conservazione,
	stato_conservazione,
	datazione_reperto,
	elementi_reperto,
	misurazioni,
	rif_biblio,
	tecnologie
	):
		self.id_invmat = id_invmat #0
		self.sito = sito #1
		self.numero_inventario = numero_inventario #2
		self.tipo_reperto = tipo_reperto #3
		self.criterio_schedatura = criterio_schedatura #4
		self.definizione = definizione #5
		self.descrizione = descrizione #6
		self.area = area #7
		self.us = us #8
		self.lavato = lavato #9
		self.nr_cassa = nr_cassa #10
		self.luogo_conservazione = luogo_conservazione #11
		self.stato_conservazione = stato_conservazione #12
		self.datazione_reperto = datazione_reperto #13
		self.elementi_reperto = elementi_reperto #14
		self.misurazioni = misurazioni #15
		self.rif_biblio = rif_biblio #16
		self.tecnologie = tecnologie #17

	#def __repr__"
	def __repr__(self):
		return "<INVENTARIO_MATERIALI(%d, '%s', '%d', '%s', '%s', '%s', '%s', %d, %d, '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s')>" % (
		self.id_invmat,
		self.sito,
		self.numero_inventario,
		self.tipo_reperto,
		self.criterio_schedatura,
		self.definizione,
		self.descrizione,
		self.area,
		self.us,
		self.lavato,
		self.nr_cassa,
		self.luogo_conservazione,
		self.stato_conservazione,
		self.datazione_reperto,
		self.elementi_reperto,
		self.misurazioni,
		self.rif_biblio,
		self.tecnologie
		)
#mapper

mapper(INVENTARIO_MATERIALI, Inventario_materiali_table.inventario_materiali_table)


class STRUTTURA(object):
	def __init__(self,
	id_struttura,
	sito,
	sigla_struttura,
	numero_struttura,
	categoria_struttura,
	tipologia_struttura,
	definizione_struttura,
	descrizione,
	interpretazione,
	periodo_iniziale,
	fase_iniziale,
	periodo_finale,
	fase_finale,
	datazione_estesa,
	materiali_impiegati,
	elementi_strutturali,
	rapporti_struttura,
	misure_struttura
	):
		self.id_struttura = id_struttura #0
		self.sito = sito #1
		self.sigla_struttura = sigla_struttura #2
		self.numero_struttura = numero_struttura #3
		self.categoria_struttura = categoria_struttura #4
		self.tipologia_struttura = tipologia_struttura #5
		self.definizione_struttura = definizione_struttura #6
		self.descrizione = descrizione #7
		self.interpretazione = interpretazione #8
		self.periodo_iniziale = periodo_iniziale #9
		self.fase_iniziale = fase_iniziale #10
		self.periodo_finale = periodo_finale #11
		self.fase_finale = fase_finale #12
		self.datazione_estesa = datazione_estesa #13
		self.materiali_impiegati = materiali_impiegati #14
		self.elementi_strutturali = elementi_strutturali #15
		self.rapporti_struttura = rapporti_struttura #16
		self.misure_struttura = misure_struttura #17

	#def __repr__"
	def __repr__(self):
		return "<STRUTTURA('%d', '%s', '%s', '%d', '%s', '%s', '%s', '%s', '%s', '%d', '%d', '%d', '%d', '%s', '%s', '%s', '%s', '%s')>" % (
		self.id_struttura,
		self.sito,
		self.sigla_struttura,
		self.numero_struttura,
		self.tipologia_struttura,
		self.categoria_struttura.
		self.definizione_struttura,
		self.descrizione,
		self.interpretazione,
		self.periodo_iniziale,
		self.fase_iniziale,
		self.periodo_finale,
		self.fase_finale,
		self.datazione_estesa,
		self.materiali_impiegati,
		self.elementi_strutturali,
		self.rapporti_struttura,
		self.misure_struttura
		)
#mapper

mapper(STRUTTURA, Struttura_table.struttura_table)

class MEDIA(object):
	#def __init__"
	def __init__(self,
	id_media,
	mediatype,
	filename,
	filetype,
	filepath,
	descrizione,
	tags
	):
		self.id_media = id_media #0
		self.mediatype = mediatype #1
		self.filename = filename #2
		self.filetype = filetype #3
		self.filepath = filepath #4
		self.descrizione = descrizione #5
		self.tags = tags #5

	#def __repr__"
	def __repr__(self):
		return "<MEDIA('%d', '%s', '%s', %s, '%s','%s')>" % (
		self.id_media,
		self.mediatype,
		self.filename,
		self.filetype,
		self.filepath,
		self.descrizione,
		self.tags
		)
#mapper
mapper(MEDIA, Media_table.media_table)


class MEDIA_THUMB(object):
	#def __init__"
	def __init__(self,
	id_media_thumb,
	id_media,
	mediatype,
	media_filename,
	media_thumb_filename,
	filetype,
	filepath
	):
		self.id_media_thumb = id_media_thumb #0
		self.id_media = id_media #1
		self.mediatype = mediatype #2
		self.media_filename = media_filename #3
		self.media_thumb_filename = media_thumb_filename #4
		self.filetype = filetype #5
		self.filepath = filepath #6

	#def __repr__"
	def __repr__(self):
		return "<MEDIA('%d', '%d', '%s', '%s', %s, '%s', '%s')>" % (
		sekf.id_media_thumb,
		self.id_media,
		self.mediatype,
		self.media_filename,
		self.media_thumb_filename,
		self.filetype,
		self.filepath
		)
#mapper
mapper(MEDIA_THUMB, Media_thumb_table.media_thumb_table)


class MEDIATOUS(object):
	#def __init__"
	def __init__(self,
	id_mediaToUs,
	id_us,
	sito,
	area,
	us,
	id_media,
	filepath
	):
		self.id_mediaToUs = id_mediaToUs #0
		self.id_us = id_us
		self.sito = sito
		self.area = area
		self.us = us
		self.id_media = id_media
		self.filepath = filepath

	#def __repr__"
	def __repr__(self):
		return "<MEDIATOUS('%d', '%d', '%s', '%s', '%d', '%d', '%s')>" % (
		self.id_mediaToUs,
		self.id_us,
		self.sito,
		self.area,
		self.us,
		self.id_media,
		self.filepath
		)
#mapper
mapper(MEDIATOUS, Media_to_US_table.media_to_us_table)


class TAFONOMIA(object):
	def __init__(self,
	id_tafonomia,
	sito,
	nr_scheda_taf,
	rito,
	descrizione,
	interpretazione,
	stato_di_conservazione,
	segnacoli,
	oggetti_rinvenuti_esterno,
	orientamento_asse,
	orientamento_azimut,
	tipo_contenitore_resti,
	riferimenti_stratigrafici,
	copertura_tipo,
	id_struttura,
	corredo_si_no,
	corredo_tipo,
	corredo_descrizione,
	lunghezza_scheletro,
	posizione_scheletro,
	posizione_cranio,
	completo_si_no,
	disturbato_si_no,
	in_connessione_si_no,
	concottatura,
	canale_libatorio_si_no,
	frammentazione_rituale_si_no
	):
		self.id_tafonomia = id_tafonomia
		self.sito = sito
		self.nr_scheda_taf = nr_scheda_taf
		self.rito = rito
		self.descrizione = descrizione
		self.interpretazione = interpretazione
		self.stato_di_conservazione = stato_di_conservazione
		self.segnacoli = segnacoli
		self.oggetti_rinvenuti_esterno = oggetti_rinvenuti_esterno
		self.orientamento_asse = orientamento_asse
		self.orientamento_azimut = orientamento_azimut
		self.tipo_contenitore_resti = tipo_contenitore_resti
		self.riferimenti_stratigrafici = riferimenti_stratigrafici
		self.copertura_tipo = copertura_tipo
		self.id_struttura = id_struttura
		self.corredo_si_no = corredo_si_no
		self.corredo_tipo = corredo_tipo
		self.corredo_descrizione = corredo_descrizione
		self.lunghezza_scheletro = lunghezza_scheletro
		self.posizione_scheletro = posizione_scheletro
		self.posizione_cranio = posizione_cranio
		self.completo_si_no = completo_si_no
		self.disturbato_si_no = disturbato_si_no
		self.in_connessione_si_no = in_connessione_si_no
		self.concottatura = concottatura
		self.canale_libatorio_si_no = canale_libatorio_si_no
		self.frammentazione_rituale_si_no = frammentazione_rituale_si_no

	#def __repr__"
	def __repr__(self):
		return "<TAFONOMIA(%d, '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %r, '%s', '%s', '%s', '%s', '%s', '%s', %r, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')>" % (
		self.id_tafonomia,
		self.sito,
		self.nr_scheda_taf,
		self.rito,
		self.descrizione,
		self.interpretazione,
		self.stato_di_conservazione,
		self.segnacoli,
		self.oggetti_rinvenuti_esterno,
		self.orientamento_asse,
		self.orientamento_azimut,
		self.tipo_contenitore_resti,
		self.riferimenti_stratigrafici,
		self.copertura_tipo,
		self.id_struttura,
		self.corredo_si_no,
		self.corredo_tipo,
		self.corredo_descrizione,
		self.lunghezza_scheletro,
		self.posizione_scheletro,
		self.posizione_cranio,
		self.completo_si_no,
		self.disturbato_si_no,
		self.in_connessione_si_no,
		self.concottatura,
		self.canale_libatorio_si_no,
		self.frammentazione_rituale_si_no
		)
#mapper
mapper(TAFONOMIA, Tafonomia_table.tafonomia_table)

class INVENTARIO_MATERIALI_TOIMP(object):
	#def __init__"
	def __init__(self,
	id_invmat,
	sito,
	numero_inventario,
	tipo_reperto,
	criterio_schedatura,
	definizione,
	descrizione,
	area,
	us,
	lavato,
	nr_cassa,
	luogo_conservazione
	):
		self.id_invmat = id_invmat #0
		self.sito = sito #1
		self.numero_inventario = numero_inventario #2
		self.tipo_reperto = tipo_reperto #3
		self.criterio_schedatura = criterio_schedatura #4
		self.definizione = definizione #5
		self.descrizione = descrizione #6
		self.area = area #7
		self.us = us #8
		self.lavato = lavato #9
		self.nr_cassa = nr_cassa #10
		self.luogo_conservazione = luogo_conservazione #11
		

	#def __repr__"
	def __repr__(self):
		return "<INVENTARIO_MATERIALI_TOIMP('%d', '%s', '%d', '%s', '%s', '%s', '%s', '%d', '%d', '%s', '%d', '%s')>" % (
		self.id_invmat,
		self.sito,
		self.numero_inventario,
		self.tipo_reperto,
		self.criterio_schedatura,
		self.definizione,
		self.descrizione,
		self.area,
		self.us,
		self.lavato,
		self.nr_cassa,
		self.luogo_conservazione
		)
#mapper

mapper(INVENTARIO_MATERIALI_TOIMP, Inventario_materiali_table_toimp.inventario_materiali_table_toimp)